package nothing.dao;

// Are these the wrong users?
//import org.appfuse.model.User;
//import org.appfuse.dao.UserDao;
import org.appfuse.dao.UserDao;

public class CookDao {
    private RecipeStepDao recipeStepDao = null;
    private RecipeDao recipeDao = null;
    private StepDao stepDao = null;
    private TypeDao typeDao = null;
    private RecipeTypeDao recipeTypeDao = null;
    private EquipmentDao equipmentDao = null;
    private RecipeEquipmentDao recipeEquipmentDao = null;
    private IngredientDao ingredientDao = null;
    private CookedDao cookedDao = null;
    private DiaryDao diaryDao = null;
    private UserDao userDao = null;
    private PurchaseDao purchaseDao = null;
    private MeasurementRatioDao measurementRatioDao = null;
    private FoodNutritionDao foodNutritionDao = null;

    public DiaryDao getDiaryDao() {
        return diaryDao;
    }

    public CookedDao getCookedDao() {
        return cookedDao;
    }

    public EquipmentDao getEquipmentDao() {
        return equipmentDao;
    }

    public IngredientDao getIngredientDao() {
        return ingredientDao;
    }

    public RecipeDao getRecipeDao() {
        return recipeDao;
    }

    public RecipeEquipmentDao getRecipeEquipmentDao() {
        return recipeEquipmentDao;
    }

    public RecipeStepDao getRecipeStepDao() {
        return recipeStepDao;
    }

    public RecipeTypeDao getRecipeTypeDao() {
        return recipeTypeDao;
    }

    public StepDao getStepDao() {
        return stepDao;
    }

    public TypeDao getTypeDao() {
        return typeDao;
    }
    
    public FoodNutritionDao getFoodNutritionDao() {
		return foodNutritionDao;
	}

	public void setFoodNutritionDao(FoodNutritionDao foodNutritionDao) {
		this.foodNutritionDao = foodNutritionDao;
	}

	public static class Builder{
	    private RecipeStepDao recipeStepDao = null;
	    private RecipeDao recipeDao = null;
	    private StepDao stepDao = null;
	    private TypeDao typeDao = null;
	    private RecipeTypeDao recipeTypeDao = null;
	    private EquipmentDao equipmentDao = null;
	    private RecipeEquipmentDao recipeEquipmentDao = null;
	    private IngredientDao ingredientDao = null;
	    private CookedDao cookedDao = null;
	    private DiaryDao diaryDao = null;
	    private UserDao userDao = null;
	    private PurchaseDao purchaseDao = null;
	    private MeasurementRatioDao measurementRatioDao = null;
	    private FoodNutritionDao foodNutritionDao = null;

	    public Builder(){			
		}
		public Builder recipeStepDao(RecipeStepDao recipeStepDao){
			this.recipeStepDao = recipeStepDao;
			return this;
		}
		public Builder recipeDao (RecipeDao recipeDao){
			this.recipeDao = recipeDao;
			return this;
			
		}
		public Builder stepDao(StepDao stepDao){
			this.stepDao = stepDao;
			return this;
		}
		public Builder typeDao(TypeDao typeDao){
			this.typeDao = typeDao;
			return this;
		}
		public Builder recipeTypeDao(RecipeTypeDao recipeTypeDao){
			this.recipeTypeDao = recipeTypeDao;
			return this;
		}
		public Builder equipmentDao(EquipmentDao equipmentDao){
			this.equipmentDao = equipmentDao;
			return this;
		}
		public Builder recipeEquipmentDao(RecipeEquipmentDao recipeEquipmentDao){
			this.recipeEquipmentDao = recipeEquipmentDao;
			return this;
		}
		public Builder ingredientDao(IngredientDao ingredientDao){
			this.ingredientDao = ingredientDao;
			return this;
		}
		public Builder cookedDao(CookedDao cookedDao){
			this.cookedDao = cookedDao;
			return this;
		}
		public Builder diaryDao(DiaryDao diaryDao){
			this.diaryDao = diaryDao;
			return this;
		}
		public Builder userDao(UserDao userDao){
			this.userDao = userDao;
			return this;
		}
		public Builder purchaseDao(PurchaseDao purchaseDao){
			this.purchaseDao = purchaseDao;
			return this;
		}
		public Builder measurementRatioDao(MeasurementRatioDao measurementRatioDao){
			this.measurementRatioDao = measurementRatioDao;
			return this;
		}
		public Builder foodNutritionDao(FoodNutritionDao foodNutritionDao){
			this.foodNutritionDao = foodNutritionDao; 
			return this;
		}
		public CookDao build(){
			return new CookDao(this);
		}
	}

	public CookDao(Builder builder){
	    recipeStepDao = builder.recipeStepDao;
	    recipeDao = builder.recipeDao;
	    stepDao = builder.stepDao;
	    typeDao = builder.typeDao;
	    recipeTypeDao = builder.recipeTypeDao;
	    equipmentDao = builder.equipmentDao;
	    recipeEquipmentDao = builder.recipeEquipmentDao;
	    ingredientDao = builder.ingredientDao;
	    cookedDao = builder.cookedDao;
	    diaryDao = builder.diaryDao;
	    userDao = builder.userDao;
	    purchaseDao = builder.purchaseDao;
	    measurementRatioDao = builder.measurementRatioDao;
	    foodNutritionDao = builder.foodNutritionDao;
	}

	private CookDao(RecipeStepDao recipeStepDao,
            RecipeDao recipeDao,
            StepDao stepDao,
            TypeDao typeDao,
            RecipeTypeDao recipeTypeDao,
            EquipmentDao equipmentDao,
            RecipeEquipmentDao recipeEquipmentDao,
            IngredientDao ingredientDao,
            CookedDao cookedDao,
           DiaryDao diaryDao,
           UserDao userDao,
           PurchaseDao purchaseDao,
           MeasurementRatioDao measurementRatioDao,
           FoodNutritionDao foodNutritionDao){
        
            this.setRecipeDao(recipeDao);
            this.setRecipeStepDao(recipeStepDao);
            this.setIngredientDao(ingredientDao);
            this.setEquipmentDao(equipmentDao);
            this.setRecipeEquipmentDao(recipeEquipmentDao);
            this.setRecipeTypeDao(recipeTypeDao);
            this.setStepDao(stepDao);
            this.setTypeDao(typeDao);
            this.setCookedDao(cookedDao);
            this.setDiaryDao(diaryDao);
            this.setUserDao(userDao);
            this.setPurchaseDao(purchaseDao);
            this.setMeasurementRatioDao(measurementRatioDao);
            this.setFoodNutritionDao(foodNutritionDao);
    }

    public MeasurementRatioDao getMeasurementRatioDao() {
        return measurementRatioDao;
    }

    public void setMeasurementRatioDao(MeasurementRatioDao measurementRatioDao) {
        this.measurementRatioDao = measurementRatioDao;
    }

    public PurchaseDao getPurchaseDao() {
        return purchaseDao;
    }

    public void setDiaryDao(DiaryDao diaryDao) {
        this.diaryDao = diaryDao;
    }

    public void setPurchaseDao(PurchaseDao purchaseDao) {
        this.purchaseDao = purchaseDao;
    }

    public UserDao getUserDao() {
        return userDao;
    }

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    private void setDairyDao(DiaryDao diaryDao) {
        this.diaryDao = diaryDao;
    }
    private void setCookedDao(CookedDao cookedDao) {
        this.cookedDao = cookedDao;
    }
    private void setEquipmentDao(EquipmentDao equipmentDao) {
        this.equipmentDao = equipmentDao;
    }    

    private void setIngredientDao(IngredientDao ingredientDao) {
        this.ingredientDao = ingredientDao;
    }

    private void setRecipeDao(RecipeDao recipeDao) {
        this.recipeDao = recipeDao;
    }

    private void setRecipeEquipmentDao(RecipeEquipmentDao recipeEquipmentDao) {
        this.recipeEquipmentDao = recipeEquipmentDao;
    }

    private void setRecipeStepDao(RecipeStepDao recipeStepDao) {
        this.recipeStepDao = recipeStepDao;
    }

    private void setRecipeTypeDao(RecipeTypeDao recipeTypeDao) {
        this.recipeTypeDao = recipeTypeDao;
    }

    private void setStepDao(StepDao stepDao) {
        this.stepDao = stepDao;
    }

    private void setTypeDao(TypeDao typeDao) {
        this.typeDao = typeDao;
    }

}
